/* 
  点击预览大图功能
  1 发送数据请求
  2 点击轮播图 预览大图
      1 给轮播图添加点击事件
      2 调用小程序api previewImage
  3 点击加入购物车
    1 绑定点击事件
    2 获取缓存中的购物车数据 数组格式
    3 判断当前商品是否已经存在
    4 已经存在了  修改商品数据 购物车数量++ 数据重新填入缓存中
    5 不存在购物车中，直接添加新元素，自带一个购买数量属性，填充回缓存
    6 弹出添加成功提示框
*/
import { request } from "../../request/index.js";
// pages/goods_detail/goods_detail.js
Page({
    /**
     * 页面的初始数据
     */
    data: {
        /* 页面数据 */
        goodsObj: {},
        /* 商品否被选中 */
        isCollect: false

    },
    /* 要预览的图片数组,也包括全部商品数据 */
    GoodsInfo: [],
    /**
     * 生命周期函数--监听页面加载
     */
    onShow: function() {
        /* 拿到页面栈 */
        let pages = getCurrentPages();
        let currentPages = pages[pages.length - 1]
        let options = currentPages.options;

        const { goods_id } = options;
        // console.log(goods_id);
        this.getGoodsDetail(goods_id)


    },
    // 获取商品详情数据
    async getGoodsDetail(goods_id) {
        const res = await request({ url: '/goods/detail', data: { goods_id } })
        this.GoodsInfo = res.data.message
            // console.log(res.data.message)
            //获取缓存中的商品收藏的数组
        let collect = wx.getStorageSync("collect") || [];
        //判断当前商品是否被收藏
        let isCollect = collect.some(v => v.goods_id === this.GoodsInfo.goods_id);

        this.setData({
            goodsObj: {
                goods_name: res.data.message.goods_name,
                goods_price: res.data.message.goods_price,
                goods_introduce: res.data.message.goods_introduce.replace(/\.webp/g, '.jpg'),
                pics: res.data.message.pics,
            },
            isCollect
        })
    },
    // 点击预览大图
    hanlePreviewIamge(e) {
        // 构造要预览的图片数组
        const urls = this.GoodsInfo.pics.map(v => v.pics_mid)
            // 2 接收图片过来的url  当前预览的图片
        const current = e.currentTarget.dataset.url;
        wx.previewImage({
            current,
            urls,
        });

    },
    // 点击加入购物车
    handleCartAdd() {
        // 1 获取购物车数组
        let cart = wx.getStorageSync("cart") || [];
        //  2 判断商品对象是否存在与购物车数组中
        let index = cart.findIndex(v => v.goods_id === this.GoodsInfo.goods_id);
        if (index === -1) {
            // 不存在 第一次添加
            this.GoodsInfo.num = 1;
            this.GoodsInfo.checked = true
            cart.push(this.GoodsInfo);
        } else {
            // 已经存在购物车数据 执行 ++
            cart[index].num++;
        }
        // 5把购物车从新添加回缓存中
        wx.setStorageSync("cart", cart);
        // 6 弹出提示
        wx.showToast({
            title: '加入成功',
            icon: 'success',
            image: '',
            duration: 1500,
            mask: true,
        });
    },
    /* 点击商品收藏 */
    handleCollect() {
        let isCollect = false;
        // 1 获取缓存中的商品收藏数组
        let collect = wx.getStorageSync('collect') || [];
        // 判断商品是否被收藏过
        let index = collect.findIndex(v => v.goods_id === this.GoodsInfo.goods_id)
            //   index !=-1 已经收藏过了
        if (index != -1) {
            // 取消收藏,在该数组中删除商品
            collect.splice(index, 1);
            isCollect = false;
            wx.showToast({
                title: '取消成功',
                icon: 'success',
                mask: true,
            });

        } else {
            collect.push(this.GoodsInfo);
            isCollect = true;
            wx.showToast({
                title: '收藏成功',
                icon: 'success',
                mask: true,
            });
        }

        wx.setStorageSync("collect", collect);
        //   修改data中的属性
        this.setData({
            isCollect
        })
    }
})